package org.elsfs.cloud.common.mybatis.ext.mybatis;

import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;

import java.util.function.Predicate;

/**
 * 谓词持有器
 *

 */
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class PredicateHolder {

    /**
     * 存储谓词判断器
     */
    private static final ThreadLocal<Predicate<TableFieldInfo>> PREDICATE_THREAD_LOCAL = new ThreadLocal<>();

    /**
     * 获取谓词
     *
     * @return 谓词
     */
    public static Predicate<TableFieldInfo> get() {
        return PREDICATE_THREAD_LOCAL.get();
    }

    /**
     * 设置谓词
     *
     * @param predicate 谓词
     */
    public static void set(Predicate<TableFieldInfo> predicate) {
        PREDICATE_THREAD_LOCAL.set(predicate);
    }

    /**
     * 移除谓词
     */
    public static void remove() {
        PREDICATE_THREAD_LOCAL.remove();
    }
}
